In computer programming, a program is stored in a memory, and is provided to a processor for execution. The program memory abstractly is formed of two planes: a control plane and a data plane. To enhance security, some processors provide hardware-based techniques to protect control flow integrity of the program. Control flow integrity defenses in general guard the control plane memory from attacks such as return-oriented programming attacks, which seek to alter the control plane. Data-oriented programming attacks are a newly formed class of threats. A data-oriented programming (DOP) attack targets the data plane but still maintains integrity of the control plane. Suitable defenses to DOP attacks have not yet been provided.